package br.com.lopes.gci.controller.Validation;

import java.util.Calendar;
import java.util.Date;

import javax.faces.component.html.HtmlInputText;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;

import org.richfaces.component.html.HtmlCalendar;

import br.com.lopes.gci.util.Constants;
import br.com.lopes.gci.util.MessageUtil;

public class ClienteValidation extends Validator{
	
	//Campos Pesquisa
	private transient HtmlInputText nomeRazaoSocialInput;
	private transient HtmlInputText cpfCnpjInput;
	private transient HtmlSelectOneMenu selectStatus;
	private transient HtmlInputText emailInput;
	private transient HtmlCalendar dataNascimentoInput;
	private transient HtmlInputText telefoneComercialInput;
	private boolean pessoaFisica = true;
	private transient HtmlSelectOneMenu menuTP;

	
	public boolean validatePesquisaInputs(){
		if(!validateInput(nomeRazaoSocialInput, MessageUtil.getInstance().getDefaultMessageFromBundle("error.campoobrigatorio"))){
			return false;
		}
		if(!validateInput(cpfCnpjInput, MessageUtil.getInstance().getDefaultMessageFromBundle("error.campoobrigatorio"))){
			return false;
		}
		if(!validateCombo(selectStatus, MessageUtil.getInstance().getDefaultMessageFromBundle("error.campoobrigatorio"))){
			return false;
		}
		if(!validateInput(emailInput, MessageUtil.getInstance().getDefaultMessageFromBundle("error.campoobrigatorio"))){
			return false;
		}
		if(!validateInput(telefoneComercialInput, MessageUtil.getInstance().getDefaultMessageFromBundle("error.campoobrigatorio"))){
			return false;
		}
		return true;
	}
	
	public boolean validateIncluir(){
		System.out.println("ClienteValidation" + "validateIncluir()");
		
		if(dataNascimentoInput.getValue()!=null){
			Calendar dataAtual = Calendar.getInstance();
			Date dataNasc = dataNascimentoInput.getCurrentDateOrDefault();
			dataAtual.add(Calendar.YEAR, -18);
			
			if(dataNasc.after(dataAtual.getTime())){
				MessageUtil.getInstance().setErrorMessageForComponent(MessageUtil.getInstance().getDefaultMessageFromBundle("cliente.menorIdade")
						, dataNascimentoInput.getClientId(FacesContext.getCurrentInstance()));
				
				return false;
			}
		}
		return true;
	}

	
	public void mudaTipoPessoa(){  
		  
		if(menuTP.getValue().equals(Constants.TIPO_PESSOA_FISICA)){
			pessoaFisica = true;
		}else{
			if(menuTP.getValue().equals(Constants.TIPO_PESSOA_JURIDICA)){
				pessoaFisica = false;
			}
		}
	}
	
	public boolean validate(){
		return true;
	}


	public HtmlInputText getNomeRazaoSocialInput() {
		return nomeRazaoSocialInput;
	}


	public void setNomeRazaoSocialInput(HtmlInputText nomeRazaoSocialInput) {
		this.nomeRazaoSocialInput = nomeRazaoSocialInput;
	}


	public HtmlInputText getCpfCnpjInput() {
		return cpfCnpjInput;
	}


	public void setCpfCnpjInput(HtmlInputText cpfCnpjInput) {
		this.cpfCnpjInput = cpfCnpjInput;
	}


	public HtmlSelectOneMenu getSelectStatus() {
		return selectStatus;
	}


	public void setSelectStatus(HtmlSelectOneMenu selectStatus) {
		this.selectStatus = selectStatus;
	}


	public HtmlInputText getEmailInput() {
		return emailInput;
	}


	public void setEmailInput(HtmlInputText emailInput) {
		this.emailInput = emailInput;
	}


	public HtmlInputText getTelefoneComercialInput() {
		return telefoneComercialInput;
	}


	public void setTelefoneComercialInput(HtmlInputText telefoneComercialInput) {
		this.telefoneComercialInput = telefoneComercialInput;
	}

	public boolean isPessoaFisica() {
		return pessoaFisica;
	}

	public void setPessoaFisica(boolean pessoaFisica) {
		this.pessoaFisica = pessoaFisica;
	}

	public HtmlSelectOneMenu getMenuTP() {
		return menuTP;
	}

	public void setMenuTP(HtmlSelectOneMenu menuTP) {
		this.menuTP = menuTP;
	}
	
	public HtmlCalendar getDataNascimentoInput() {
		return dataNascimentoInput;
	}

	public void setDataNascimentoInput(HtmlCalendar dataNascimentoInput) {
		this.dataNascimentoInput = dataNascimentoInput;
	}

}
